//
// Created by zhouh on 25-6-3.
//

#ifndef LIST_H
#define LIST_H

#include "port_macro.h"

#define MAX_LIST_ITEM_NUM (30)

/* 链表节点类型定义 */
typedef struct list_item
{
    tick_t item_value;      // 辅助值，帮助排序
    struct list_item *next; // 下一个节点
    struct list_item *prev; // 上一个节点
    void *owner;            // 节点拥有者(TCB)
    void *container;        // 所属根节点
} list_item_t;

/* 精简节点类型定义 */
typedef struct mini_list
{
    tick_t item_value;      // 辅助值，帮助排序
    struct list_item *next; // 下一个节点
    struct list_item *prev; // 上一个节点
} mini_list_item_t;

/* 链表根节点类型定义 */
typedef struct list
{
    ubase_t item_num;            // 节点计数器
    list_item_t *index;          // 节点索引
    mini_list_item_t *mini_item; // 精简节点
} list_t;

extern void list_item_init(list_item_t *const item); // 链表节点初始化
extern void list_init(list_t *const list);           // 列表根节点初始化

#endif //LIST_H
